IAxis.CyclicSwitch 方法
使用軸位置來控制重複觸發數位輸出的開關。當軸達到特定的位置,開關即開啟或關閉,開關可透過軸向前或向後移動的方向來控制。
命名空間:IntervalZero.KINGSTAR.Base.Class組合: IntervalZero.KINGSTAR.Base.Class (於 IntervalZero.KINGSTAR.Base.dll) 版本:4.4.0.0
語法
void DigitalCamSwitch(
McOutput output,
double startPosition,
McCamSwitch cyclicSwitch,
McLengthType intervalType,
double interval,
McLengthType durationType,
double duration,
McSource valueSource
)Sub DigitalCamSwitch(
output As McOutput,
startPosition As Double,
cyclicSwitch As McCamSwitch,
intervalType As McLengthType,
interval As Double,
durationType As McLengthType,
duration As Double,
valueSource As McSource
)參數
output
型別:McOutput
選擇對應軌道所控制的數位輸出。
startPosition
型別:double
開關開啟的位置。
cyclicSwitch
型別:McCamSwitch
控制開關動作。
- TrackNumber:值必須為零。
- FirstOnPosition:值必須為非負,為各週期開始位置相關的距離。
- LastOnPosition:值必須為正,且較 FirstOnPosition 為大,為各週期開始位置相關的距離。
- Duration:值必須為正。
intervalType
型別:McLengthType
Interval 類型。可使用 mcDistance 與 mcTime。
interval
型別:double
週期長度。依照所選的 IntervalType 而定,值必須為正。
durationType
型別:McLengthType
Duration 類型。可使用 mcDistance 與 mcCount。
duration
型別:double
週期重複的持續時間,依照所選的 DurationType 而定,值必須為正。
valueSource
型別:McSource
定義軸值的來源,例如位置:
- mcCommandedValue, mcSetValue – 同步設定值。建議使用此設定。
- mcActualValue – 同步實際值。此設定可能不穩定。
- mcSecondEncoderValue – 從第二編碼器讀取的實際值。
備註
- McCamSwitch 為供應商特定的結構,用於定義數位凸輪的開關。
- McOutput 為供應商特定的結構,用於連接至(實體)輸出,若使的是您個人的伺服驅動器的數位輸出 (DO),需在 ISubsystem.Start 前使用 ISubsystem.AxisOutput。
- 在 McCamSwitch 類別中,當 CamSwitchMode 選擇為位置時不支援以下組合:
- IntervalType: mcTime;DurationType: mcDistance.
- IntervalType: mcTime;DurationType: mcCount.
使用案例:
以下案例雖來自於 RT/Win32 介面,但有助於理解週期開關的運作方式。
案例 1
循環開關在持續時間內完成其任務。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
40, //FirstOnPosition
60, //LastOnPosition
1, //AxisDirection. 1 = Positive.
0, //CamSwitchMode. 0 = Position.
0 //Duration. It is not used in this case.
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcDistance, //IntervalType
100, //Interval
mcDistance, //DurationType
250, //Duration
mcSetValue //ValueSource
);
案例 2
循環開關在完成任務之前中止。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
0, //FirstOnPosition
0, //LastOnPosition
1, //AxisDirection. 1 = Positive.
1, //CamSwitchMode. 1 = Time.
0.003 //Duration
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcTime, //IntervalType
0.005, //Interval
mcCount, //DurationType
3, //Duration
mcSetValue //ValueSource
);
參見